/**
 * 项目名称:
 *
 * @Author: 夏国倩
 * @Date: 2023/10/14 15:35
 * @Copyright
 */
package Reflect;

import java.lang.reflect.Method;

/*
重点掌握
通过反射机制怎么调用一个对象的方法
 */
public class ReflectTest10 {
    public static void main(String[] args) throws Exception{
        //不适用反射机制，怎么调用方法
        //创建对象
        UserService userService=new UserService();
        //调用方法
        /*
        要素分析：
        要素1：对象UserService
        要素2：login方法名
        要素3：实参列表
        要素4：返回值
         */
        boolean loginSuccess=userService.login("admin","123");
        //System.out.println(loginSuccess);
        System.out.println(loginSuccess?"登录成功":"登录失败");

        //使用反射机制来调用一个对象的方法该怎么做？
        Class userServiceClass=Class.forName("demo.Reflect.UserService");
        //创建对象
        Object obj = userServiceClass.newInstance();
        //获取Method
        Method loginMethod = userServiceClass.getDeclaredMethod("login", String.class, String.class);
        //调用方法
        //反射机制中最重要的方法，必须记住invoke
        Object retValue = loginMethod.invoke(obj, "admin", "123123");
        System.out.println(retValue);
    }
}
